#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <rtthread.h>
#include "rtdevice.h"

#define DBG_TAG "key.c"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

#include "led.h"

// LED引脚定义 在文件中 Libraries/rt_drivers/drv_gpio.c 中查找
#define KEY3_RTTPIN  (22)     // 引脚 - PA6

/**
 * @brief  KEY 线程执行函数
 * @param  parameter 线程的入参
 * @return 无
 */
void key_thread_entry(void *parameter)
{
    while (1)
    {
        if(rt_pin_read(KEY3_RTTPIN) == 0)   // 如果按键3按下
        {
            LOG_D("key 3 ... 1");
            rt_thread_mdelay(20);   // 延时消抖
            if(rt_pin_read(KEY3_RTTPIN) == 0)
            {
                LOG_D("key 3 ... 2");
                alert_led_stop();
            }
        }
        else
        {
            rt_thread_mdelay(100);
        }
    }
}

/**
 * @brief  启动 KEY 处理线程
 * @param  无
 * @return 无
 */
int key_init(void *arg)
{
    rt_pin_mode(KEY3_RTTPIN, PIN_MODE_INPUT_PULLUP);

    rt_thread_t thread = rt_thread_create("key_thread", key_thread_entry, RT_NULL, 512, 10, 20);
    if (thread != RT_NULL)
    {
        rt_thread_startup(thread);  // 创建成功则启动线程
    }
    else
    {
        LOG_E("create key thread failed");
        return (-RT_ERROR);
    }

    return RT_EOK;
}
